{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[Source](https://blog.keras.io/building-autoencoders-in-keras.html)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.layers import Input, Dense\n",
    "from keras.models import Model\n",
    "from keras.datasets import mnist\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python2.7/dist-packages/ipykernel_launcher.py:20: UserWarning: Update your `Model` call to the Keras 2 API: `Model(outputs=Tensor(\"de..., inputs=Tensor(\"in...)`\n",
      "/usr/local/lib/python2.7/dist-packages/ipykernel_launcher.py:24: UserWarning: Update your `Model` call to the Keras 2 API: `Model(outputs=Tensor(\"de..., inputs=Tensor(\"in...)`\n",
      "/usr/local/lib/python2.7/dist-packages/ipykernel_launcher.py:35: UserWarning: Update your `Model` call to the Keras 2 API: `Model(outputs=Tensor(\"de..., inputs=Tensor(\"in...)`\n"
     ]
    }
   ],
   "source": [
    "# this is the size of the encoded representations\n",
    "encoding_dim = 32\n",
    "\n",
    "#INPUT LAYER\n",
    "input_img = Input(shape=(784,))\n",
    "\n",
    "#ENCODE LAYER\n",
    "# \"encoded\" is the encoded representation of the input\n",
    "encoded = Dense(encoding_dim*4, activation='relu')(input_img)\n",
    "encoded = Dense(encoding_dim*2, activation='relu')(encoded)\n",
    "encoded = Dense(encoding_dim, activation='relu')(encoded)\n",
    "\n",
    "#DECODED LAYER\n",
    "# \"decoded\" is the lossy reconstruction of the input\n",
    "decoded = Dense(encoding_dim*2, activation='relu')(encoded)\n",
    "decoded = Dense(encoding_dim*4, activation='relu')(decoded)\n",
    "decoded = Dense(784, activation='sigmoid')(decoded)\n",
    "\n",
    "#MODEL\n",
    "autoencoder = Model(input=input_img, output=decoded)\n",
    "\n",
    "\n",
    "#SEPERATE ENCODER MODEL\n",
    "encoder = Model(input=input_img, output=encoded)\n",
    "\n",
    "# create a placeholder for an encoded (32-dimensional) input\n",
    "encoded_input = Input(shape=(encoding_dim,))\n",
    "\n",
    "# retrieve the last layer of the autoencoder model\n",
    "decoder_layer1 = autoencoder.layers[-3]\n",
    "decoder_layer2 = autoencoder.layers[-2]\n",
    "decoder_layer3 = autoencoder.layers[-1]\n",
    "\n",
    "# create the decoder model\n",
    "decoder = Model(input=encoded_input, output=decoder_layer3(decoder_layer2(decoder_layer1(encoded_input))))\n",
    "\n",
    "# OLD retrieve the last layer of the autoencoder model\n",
    "# decoder_layer = autoencoder.layers[-1]\n",
    "\n",
    "# OLD create the decoder model\n",
    "# decoder = Model(input=encoded_input, output=decoder_layer(encoded_input))\n",
    "\n",
    "#COMPILER\n",
    "autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 60000 samples, validate on 10000 samples\n",
      "Epoch 1/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.3723 - val_loss: 0.2636\n",
      "Epoch 2/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.2578 - val_loss: 0.2503\n",
      "Epoch 3/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.2425 - val_loss: 0.2338\n",
      "Epoch 4/100\n",
      "60000/60000 [==============================] - 5s - loss: 0.2257 - val_loss: 0.2156\n",
      "Epoch 5/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.2081 - val_loss: 0.2006\n",
      "Epoch 6/100\n",
      "60000/60000 [==============================] - 5s - loss: 0.1973 - val_loss: 0.1922\n",
      "Epoch 7/100\n",
      "60000/60000 [==============================] - 5s - loss: 0.1881 - val_loss: 0.1837\n",
      "Epoch 8/100\n",
      "60000/60000 [==============================] - 5s - loss: 0.1810 - val_loss: 0.1783\n",
      "Epoch 9/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1750 - val_loss: 0.1703\n",
      "Epoch 10/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1698 - val_loss: 0.1661\n",
      "Epoch 11/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1660 - val_loss: 0.1618\n",
      "Epoch 12/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1625 - val_loss: 0.1602\n",
      "Epoch 13/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1591 - val_loss: 0.1569\n",
      "Epoch 14/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1556 - val_loss: 0.1535\n",
      "Epoch 15/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1522 - val_loss: 0.1495\n",
      "Epoch 16/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1488 - val_loss: 0.1445\n",
      "Epoch 17/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1458 - val_loss: 0.1433\n",
      "Epoch 18/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1436 - val_loss: 0.1420\n",
      "Epoch 19/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1418 - val_loss: 0.1394\n",
      "Epoch 20/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1400 - val_loss: 0.1384\n",
      "Epoch 21/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1385 - val_loss: 0.1364\n",
      "Epoch 22/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1369 - val_loss: 0.1357\n",
      "Epoch 23/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1358 - val_loss: 0.1346\n",
      "Epoch 24/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1346 - val_loss: 0.1327\n",
      "Epoch 25/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1335 - val_loss: 0.1310\n",
      "Epoch 26/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1322 - val_loss: 0.1301\n",
      "Epoch 27/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1312 - val_loss: 0.1292\n",
      "Epoch 28/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1299 - val_loss: 0.1286\n",
      "Epoch 29/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1289 - val_loss: 0.1271\n",
      "Epoch 30/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1279 - val_loss: 0.1256\n",
      "Epoch 31/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1268 - val_loss: 0.1256\n",
      "Epoch 32/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1259 - val_loss: 0.1240\n",
      "Epoch 33/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1251 - val_loss: 0.1225\n",
      "Epoch 34/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1243 - val_loss: 0.1228\n",
      "Epoch 35/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1238 - val_loss: 0.1214\n",
      "Epoch 36/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1230 - val_loss: 0.1211\n",
      "Epoch 37/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1224 - val_loss: 0.1204\n",
      "Epoch 38/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1217 - val_loss: 0.1198\n",
      "Epoch 39/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1211 - val_loss: 0.1192\n",
      "Epoch 40/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1205 - val_loss: 0.1190\n",
      "Epoch 41/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1201 - val_loss: 0.1185\n",
      "Epoch 42/100\n",
      "60000/60000 [==============================] - 5s - loss: 0.1196 - val_loss: 0.1180\n",
      "Epoch 43/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1191 - val_loss: 0.1176\n",
      "Epoch 44/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1186 - val_loss: 0.1173\n",
      "Epoch 45/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1181 - val_loss: 0.1161\n",
      "Epoch 46/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1177 - val_loss: 0.1162\n",
      "Epoch 47/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1170 - val_loss: 0.1157\n",
      "Epoch 48/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1166 - val_loss: 0.1149\n",
      "Epoch 49/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1163 - val_loss: 0.1142\n",
      "Epoch 50/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1157 - val_loss: 0.1147\n",
      "Epoch 51/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1152 - val_loss: 0.1138\n",
      "Epoch 52/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1147 - val_loss: 0.1136\n",
      "Epoch 53/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1143 - val_loss: 0.1125\n",
      "Epoch 54/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1140 - val_loss: 0.1124\n",
      "Epoch 55/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1134 - val_loss: 0.1115\n",
      "Epoch 56/100\n",
      "60000/60000 [==============================] - 5s - loss: 0.1130 - val_loss: 0.1116\n",
      "Epoch 57/100\n",
      "60000/60000 [==============================] - 5s - loss: 0.1126 - val_loss: 0.1116\n",
      "Epoch 58/100\n",
      "60000/60000 [==============================] - 6s - loss: 0.1123 - val_loss: 0.1114\n",
      "Epoch 59/100\n",
      "60000/60000 [==============================] - 5s - loss: 0.1119 - val_loss: 0.1097\n",
      "Epoch 60/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1116 - val_loss: 0.1103\n",
      "Epoch 61/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1113 - val_loss: 0.1091\n",
      "Epoch 62/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1108 - val_loss: 0.1088\n",
      "Epoch 63/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1104 - val_loss: 0.1111\n",
      "Epoch 64/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1102 - val_loss: 0.1080\n",
      "Epoch 65/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1099 - val_loss: 0.1086\n",
      "Epoch 66/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1094 - val_loss: 0.1085\n",
      "Epoch 67/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1092 - val_loss: 0.1091\n",
      "Epoch 68/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1089 - val_loss: 0.1075\n",
      "Epoch 69/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1086 - val_loss: 0.1074\n",
      "Epoch 70/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1083 - val_loss: 0.1071\n",
      "Epoch 71/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1081 - val_loss: 0.1073\n",
      "Epoch 72/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1077 - val_loss: 0.1066\n",
      "Epoch 73/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1076 - val_loss: 0.1055\n",
      "Epoch 74/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1071 - val_loss: 0.1058\n",
      "Epoch 75/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1069 - val_loss: 0.1066\n",
      "Epoch 76/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1067 - val_loss: 0.1062\n",
      "Epoch 77/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1065 - val_loss: 0.1053\n",
      "Epoch 78/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1062 - val_loss: 0.1048\n",
      "Epoch 79/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1060 - val_loss: 0.1049\n",
      "Epoch 80/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1057 - val_loss: 0.1054\n",
      "Epoch 81/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1055 - val_loss: 0.1054\n",
      "Epoch 82/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1051 - val_loss: 0.1040\n",
      "Epoch 83/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1049 - val_loss: 0.1029\n",
      "Epoch 84/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1047 - val_loss: 0.1032\n",
      "Epoch 85/100\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "60000/60000 [==============================] - 4s - loss: 0.1045 - val_loss: 0.1037\n",
      "Epoch 86/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1041 - val_loss: 0.1041\n",
      "Epoch 87/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1039 - val_loss: 0.1038\n",
      "Epoch 88/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1037 - val_loss: 0.1016\n",
      "Epoch 89/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1034 - val_loss: 0.1035\n",
      "Epoch 90/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1031 - val_loss: 0.1014\n",
      "Epoch 91/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1028 - val_loss: 0.1023\n",
      "Epoch 92/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1026 - val_loss: 0.1017\n",
      "Epoch 93/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1024 - val_loss: 0.1015\n",
      "Epoch 94/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1022 - val_loss: 0.1019\n",
      "Epoch 95/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1021 - val_loss: 0.0999\n",
      "Epoch 96/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1019 - val_loss: 0.1010\n",
      "Epoch 97/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1017 - val_loss: 0.1013\n",
      "Epoch 98/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1014 - val_loss: 0.1006\n",
      "Epoch 99/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1013 - val_loss: 0.1010\n",
      "Epoch 100/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1011 - val_loss: 0.0999\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x7fda1de57c10>"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "autoencoder.fit(x_train, x_train,\n",
    "                epochs=100,\n",
    "                batch_size=256,\n",
    "                shuffle=True,\n",
    "                validation_data=(x_test, x_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "# encode and decode some digits\n",
    "# note that we take them from the *test* set\n",
    "encoded_imgs = encoder.predict(x_test)\n",
    "decoded_imgs = decoder.predict(encoded_imgs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fda1dc2ebd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# use Matplotlib (don't ask)\n",
    "\n",
    "n = 10  # how many digits we will display\n",
    "plt.figure(figsize=(20, 4))\n",
    "for i in range(n):\n",
    "    # display original\n",
    "    ax = plt.subplot(2, n, i + 1)\n",
    "    plt.imshow(x_test[i].reshape(28, 28))\n",
    "    plt.gray()\n",
    "    ax.get_xaxis().set_visible(False)\n",
    "    ax.get_yaxis().set_visible(False)\n",
    "\n",
    "    # display reconstruction\n",
    "    ax = plt.subplot(2, n, i + 1 + n)\n",
    "    plt.imshow(decoded_imgs[i].reshape(28, 28))\n",
    "    plt.gray()\n",
    "    ax.get_xaxis().set_visible(False)\n",
    "    ax.get_yaxis().set_visible(False)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# old stuff"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "encoding_dim = 32\n",
    "\n",
    "input_img = Input(shape=(784,))\n",
    "encoded = Dense(encoding_dim, activation='relu')(input_img)\n",
    "encoded = Dense(64, activation='relu')(encoded)\n",
    "encoded = Dense(32, activation='relu')(encoded)\n",
    "\n",
    "decoded = Dense(64, activation='relu')(encoded)\n",
    "decoded = Dense(128, activation='relu')(decoded)\n",
    "decoded = Dense(784, activation='sigmoid')(decoded)\n",
    "\n",
    "autoencoder = Model(input_img, decoded)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# this model maps an input to its encoded representation\n",
    "encoder = Model(input_img, encoded)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python2.7/dist-packages/ipykernel_launcher.py:12: UserWarning: Update your `Model` call to the Keras 2 API: `Model(outputs=Tensor(\"de..., inputs=Tensor(\"in...)`\n",
      "  if sys.path[0] == '':\n",
      "/usr/local/lib/python2.7/dist-packages/ipykernel_launcher.py:13: UserWarning: Update your `Model` call to the Keras 2 API: `Model(outputs=Tensor(\"de..., inputs=Tensor(\"in...)`\n",
      "  del sys.path[0]\n",
      "/usr/local/lib/python2.7/dist-packages/ipykernel_launcher.py:14: UserWarning: Update your `Model` call to the Keras 2 API: `Model(outputs=Tensor(\"de..., inputs=Tensor(\"in...)`\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "# create a placeholder for an encoded (32-dimensional) input\n",
    "encoded_input_1 = Input(shape=(32,))\n",
    "encoded_input_2 = Input(shape=(64,))\n",
    "encoded_input_3 = Input(shape=(128,))\n",
    "\n",
    "# retrieve the last layer of the autoencoder model\n",
    "decoder_layer_1 = autoencoder.layers[-3]\n",
    "decoder_layer_2 = autoencoder.layers[-2]\n",
    "decoder_layer_3 = autoencoder.layers[-1]\n",
    "\n",
    "# create the decoder model\n",
    "decoder_1 = Model(input=encoded_input_1, output=decoder_layer_1(encoded_input_1))\n",
    "decoder_2 = Model(input=encoded_input_2, output=decoder_layer_2(encoded_input_2))\n",
    "decoder_3 = Model(input=encoded_input_3, output=decoder_layer_3(encoded_input_3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "Input 0 is incompatible with layer dense_36: expected axis -1 of input shape to have value 128 but got shape (None, 32)",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-39-4cfdba66904d>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0mdecoder_layer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mautoencoder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlayers\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0;31m# create the decoder model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mdecoder\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mModel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mencoded_input\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecoder_layer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mencoded_input\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs, **kwargs)\u001b[0m\n\u001b[1;32m    567\u001b[0m             \u001b[0;31m# Raise exceptions in case the input is not compatible\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    568\u001b[0m             \u001b[0;31m# with the input_spec set at build time.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 569\u001b[0;31m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0massert_input_compatibility\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    570\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    571\u001b[0m             \u001b[0;31m# Handle mask propagation.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/keras/engine/topology.pyc\u001b[0m in \u001b[0;36massert_input_compatibility\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m    477\u001b[0m                                              \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m' of input shape to have '\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    478\u001b[0m                                              \u001b[0;34m'value '\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 479\u001b[0;31m                                              ' but got shape ' + str(x_shape))\n\u001b[0m\u001b[1;32m    480\u001b[0m             \u001b[0;31m# Check shape.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    481\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mspec\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mValueError\u001b[0m: Input 0 is incompatible with layer dense_36: expected axis -1 of input shape to have value 128 but got shape (None, 32)"
     ]
    }
   ],
   "source": [
    "# create a placeholder for an encoded (32-dimensional) input\n",
    "encoded_input = Input(shape=(encoding_dim,))\n",
    "# retrieve the last layer of the autoencoder model\n",
    "decoder_layer = autoencoder.layers[-1]\n",
    "# create the decoder model\n",
    "decoder = Model(encoded_input, decoder_layer(encoded_input))\n",
    "\n",
    "\n",
    "#===================================\n",
    "# encoding_dim = 128\n",
    "\n",
    "# # this model maps an input to its encoded representation\n",
    "# encoder = Model(input_img, encoded)\n",
    "\n",
    "# # create a placeholder for an encoded (32-dimensional) input\n",
    "# encoded_input = Input(shape=(encoding_dim,))\n",
    "# # retrieve the last layer of the autoencoder model\n",
    "# decoder_layer = autoencoder.layers[-1]\n",
    "\n",
    "# decoded_input = Input(shape=(decoding_dim,))\n",
    "# # create the decoder model\n",
    "# decoder = Model(decoded_input, decoder_layer(decoded_input))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "(x_train, _), (x_test, _) = mnist.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(60000, 784)\n",
      "(10000, 784)\n"
     ]
    }
   ],
   "source": [
    "x_train = x_train.astype('float32') / 255.\n",
    "x_test = x_test.astype('float32') / 255.\n",
    "x_train = x_train.reshape((len(x_train), np.prod(x_train.shape[1:])))\n",
    "x_test = x_test.reshape((len(x_test), np.prod(x_test.shape[1:])))\n",
    "print x_train.shape\n",
    "print x_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 60000 samples, validate on 10000 samples\n",
      "Epoch 1/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.3455 - val_loss: 0.2650\n",
      "Epoch 2/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.2604 - val_loss: 0.2564\n",
      "Epoch 3/100\n",
      "60000/60000 [==============================] - 5s - loss: 0.2499 - val_loss: 0.2423\n",
      "Epoch 4/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.2341 - val_loss: 0.2270\n",
      "Epoch 5/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.2220 - val_loss: 0.2147\n",
      "Epoch 6/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.2105 - val_loss: 0.2036\n",
      "Epoch 7/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.2010 - val_loss: 0.1959\n",
      "Epoch 8/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1935 - val_loss: 0.1886\n",
      "Epoch 9/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1866 - val_loss: 0.1825\n",
      "Epoch 10/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1817 - val_loss: 0.1783\n",
      "Epoch 11/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1778 - val_loss: 0.1741\n",
      "Epoch 12/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1744 - val_loss: 0.1717\n",
      "Epoch 13/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1712 - val_loss: 0.1693\n",
      "Epoch 14/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1680 - val_loss: 0.1648\n",
      "Epoch 15/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1644 - val_loss: 0.1619\n",
      "Epoch 16/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1609 - val_loss: 0.1576\n",
      "Epoch 17/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1577 - val_loss: 0.1556\n",
      "Epoch 18/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1549 - val_loss: 0.1563\n",
      "Epoch 19/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1525 - val_loss: 0.1502\n",
      "Epoch 20/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1505 - val_loss: 0.1488\n",
      "Epoch 21/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1489 - val_loss: 0.1469\n",
      "Epoch 22/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1474 - val_loss: 0.1448\n",
      "Epoch 23/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1460 - val_loss: 0.1432\n",
      "Epoch 24/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1447 - val_loss: 0.1434\n",
      "Epoch 25/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1434 - val_loss: 0.1404\n",
      "Epoch 26/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1420 - val_loss: 0.1399\n",
      "Epoch 27/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1406 - val_loss: 0.1383\n",
      "Epoch 28/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1393 - val_loss: 0.1377\n",
      "Epoch 29/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1381 - val_loss: 0.1369\n",
      "Epoch 30/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1370 - val_loss: 0.1348\n",
      "Epoch 31/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1359 - val_loss: 0.1343\n",
      "Epoch 32/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1350 - val_loss: 0.1338\n",
      "Epoch 33/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1341 - val_loss: 0.1318\n",
      "Epoch 34/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1331 - val_loss: 0.1309\n",
      "Epoch 35/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1323 - val_loss: 0.1307\n",
      "Epoch 36/100\n",
      "60000/60000 [==============================] - 3s - loss: 0.1315 - val_loss: 0.1295\n",
      "Epoch 37/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1307 - val_loss: 0.1294\n",
      "Epoch 38/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1299 - val_loss: 0.1282\n",
      "Epoch 39/100\n",
      "60000/60000 [==============================] - 4s - loss: 0.1291 - val_loss: 0.1275\n",
      "Epoch 40/100\n",
      "55040/60000 [==========================>...] - ETA: 0s - loss: 0.1283"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-46-e8b45f29d7d4>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      3\u001b[0m                 \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m256\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m                 \u001b[0mshuffle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mTrue\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m                 validation_data=(x_test, x_test))\n\u001b[0m",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/keras/engine/training.pyc\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, **kwargs)\u001b[0m\n\u001b[1;32m   1496\u001b[0m                               \u001b[0mval_f\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mval_f\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mval_ins\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mval_ins\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshuffle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mshuffle\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1497\u001b[0m                               \u001b[0mcallback_metrics\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcallback_metrics\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1498\u001b[0;31m                               initial_epoch=initial_epoch)\n\u001b[0m\u001b[1;32m   1499\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1500\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msample_weight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/keras/engine/training.pyc\u001b[0m in \u001b[0;36m_fit_loop\u001b[0;34m(self, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch)\u001b[0m\n\u001b[1;32m   1150\u001b[0m                 \u001b[0mbatch_logs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'size'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_ids\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1151\u001b[0m                 \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_logs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1152\u001b[0;31m                 \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1153\u001b[0m                 \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1154\u001b[0m                     \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/keras/backend/tensorflow_backend.pyc\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m   2227\u001b[0m         \u001b[0msession\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2228\u001b[0m         updated = session.run(self.outputs + [self.updates_op],\n\u001b[0;32m-> 2229\u001b[0;31m                               feed_dict=feed_dict)\n\u001b[0m\u001b[1;32m   2230\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0mupdated\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2231\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m    776\u001b[0m     \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    777\u001b[0m       result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[0;32m--> 778\u001b[0;31m                          run_metadata_ptr)\n\u001b[0m\u001b[1;32m    779\u001b[0m       \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    780\u001b[0m         \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m    980\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mfinal_fetches\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mfinal_targets\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    981\u001b[0m       results = self._do_run(handle, final_targets, final_fetches,\n\u001b[0;32m--> 982\u001b[0;31m                              feed_dict_string, options, run_metadata)\n\u001b[0m\u001b[1;32m    983\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    984\u001b[0m       \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_do_run\u001b[0;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m   1030\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1031\u001b[0m       return self._do_call(_run_fn, self._session, feed_dict, fetch_list,\n\u001b[0;32m-> 1032\u001b[0;31m                            target_list, options, run_metadata)\n\u001b[0m\u001b[1;32m   1033\u001b[0m     \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1034\u001b[0m       return self._do_call(_prun_fn, self._session, handle, feed_dict,\n",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m   1037\u001b[0m   \u001b[0;32mdef\u001b[0m \u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1038\u001b[0m     \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1039\u001b[0;31m       \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1040\u001b[0m     \u001b[0;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1041\u001b[0m       \u001b[0mmessage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_text\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_run_fn\u001b[0;34m(session, feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[1;32m   1019\u001b[0m         return tf_session.TF_Run(session, options,\n\u001b[1;32m   1020\u001b[0m                                  \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1021\u001b[0;31m                                  status, run_metadata)\n\u001b[0m\u001b[1;32m   1022\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1023\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_prun_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "autoencoder.fit(x_train, x_train,\n",
    "                epochs=100,\n",
    "                batch_size=256,\n",
    "                shuffle=True,\n",
    "                validation_data=(x_test, x_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "Error when checking : expected input_15 to have shape (None, 128) but got array with shape (10000, 32)",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-35-d2a6037c896d>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;31m# note that we take them from the *test* set\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0mencoded_imgs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mencoder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mdecoded_imgs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdecoder\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mencoded_imgs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/keras/engine/training.pyc\u001b[0m in \u001b[0;36mpredict\u001b[0;34m(self, x, batch_size, verbose)\u001b[0m\n\u001b[1;32m   1565\u001b[0m         x = _standardize_input_data(x, self._feed_input_names,\n\u001b[1;32m   1566\u001b[0m                                     \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_feed_input_shapes\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1567\u001b[0;31m                                     check_batch_axis=False)\n\u001b[0m\u001b[1;32m   1568\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstateful\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1569\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mbatch_size\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mbatch_size\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/usr/local/lib/python2.7/dist-packages/keras/engine/training.pyc\u001b[0m in \u001b[0;36m_standardize_input_data\u001b[0;34m(data, names, shapes, check_batch_axis, exception_prefix)\u001b[0m\n\u001b[1;32m    137\u001b[0m                             \u001b[0;34m' to have shape '\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mshapes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    138\u001b[0m                             \u001b[0;34m' but got array with shape '\u001b[0m \u001b[0;34m+\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 139\u001b[0;31m                             str(array.shape))\n\u001b[0m\u001b[1;32m    140\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0marrays\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    141\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mValueError\u001b[0m: Error when checking : expected input_15 to have shape (None, 128) but got array with shape (10000, 32)"
     ]
    }
   ],
   "source": [
    "# encode and decode some digits\n",
    "# note that we take them from the *test* set\n",
    "encoded_imgs = encoder.predict(x_test)\n",
    "decoded_imgs = decoder.predict(encoded_imgs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# use Matplotlib (don't ask)\n",
    "\n",
    "n = 10  # how many digits we will display\n",
    "plt.figure(figsize=(20, 4))\n",
    "for i in range(n):\n",
    "    # display original\n",
    "    ax = plt.subplot(2, n, i + 1)\n",
    "    plt.imshow(x_test[i].reshape(28, 28))\n",
    "    plt.gray()\n",
    "    ax.get_xaxis().set_visible(False)\n",
    "    ax.get_yaxis().set_visible(False)\n",
    "\n",
    "    # display reconstruction\n",
    "    ax = plt.subplot(2, n, i + 1 + n)\n",
    "    plt.imshow(decoded_imgs[i].reshape(28, 28))\n",
    "    plt.gray()\n",
    "    ax.get_xaxis().set_visible(False)\n",
    "    ax.get_yaxis().set_visible(False)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz\n"
     ]
    }
   ],
   "source": [
    "(x_train, _), (x_test, _) = mnist.load_data()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
